home *** CD-ROM | disk | FTP | other *** search
/ Collection of Tools & Utilities / Collection of Tools and Utilities.iso / print / isigns50.zip / PRT.PAS < prev    next >
Pascal/Delphi Source File  |  1989-10-01  |  19KB  |  439 lines

  1. PROCEDURE avail_space;
  2. VAR  pitch : REAL;
  3. BEGIN
  4.     IF given_width = 0 THEN
  5.         CASE output_device OF
  6.             printr : BEGIN
  7.                          IF block_type <> bit THEN BEGIN
  8.                              CASE prt_cpi OF
  9.                                  pica     : pitch := 10;
  10.                                  elite    : pitch := 12;
  11.                                  squeezed : pitch := 17;      {16.66 for IDS, HP}
  12.                                  tiny     : pitch := 20      {n/a on IDS printer}
  13.                              END; {case}
  14.                              IF device_size = wide THEN
  15.                                  avail_width := TRUNC(pitch * 14)
  16.                              ELSE
  17.                                  avail_width := TRUNC(pitch * 8)
  18.                              {end}
  19.                          END ELSE BEGIN
  20.                              CASE prt_type OF
  21.                                  ids : IF device_size = wide THEN
  22.                                            avail_width := 1134
  23.                                        ELSE avail_width := 672;
  24.                                   hp : CASE graphic_dens OF
  25.                                            single : avail_width := 600;
  26.                                            double : avail_width := 800;
  27.                                            triple : avail_width := 1200;
  28.                                            quad   : avail_width := 2400
  29.                                        END; {case graphic_dens}
  30.                                epson : CASE graphic_dens OF
  31.                                            single : IF device_size = wide THEN
  32.                                                         avail_width := 816
  33.                                                     ELSE avail_width := 480;
  34.                                     double,triple : IF device_size = wide THEN
  35.                                                         avail_width := 1632
  36.                                                     ELSE avail_width := 960;
  37.                                            quad   : IF device_size = wide THEN
  38.                                                         avail_width := 3264
  39.                                                     ELSE avail_width := 1920
  40.                                        END {case graphic_dens}
  41.                              END {case prt_type}
  42.                          END {if not bit}
  43.                      END;
  44.             screen : IF device_size = wide THEN
  45.                          avail_width := 131
  46.                      ELSE
  47.                          avail_width := 79;
  48.          recd_file : avail_width := Max_Length
  49.         END {case}
  50.     ELSE {width WAS given}
  51.         avail_width := given_width;
  52.     {end if width was not given}
  53.  
  54.     GOTORC(16,6); lowvideo; WRITE('Width available -> ');
  55.     highvideo; WRITE(avail_width ,'  ');
  56.     GOTORC(17,25); CLREOL; highvideo; WRITE('---') {don't know required}
  57. END;
  58.  
  59.  
  60. PROCEDURE set_up_prt; { (reset_prt : BOOLEAN) }
  61. BEGIN
  62.     IF reset_prt THEN
  63.         CASE prt_type OF
  64.            {dumb : ;  {no action}
  65.              ids : putchr(CHR(30)+CHR(27)+'B8$'+CHR(27)+'Q4$'); {12 cpi, 6 lpi, Black}
  66.               hp : putchr(CHR(27)+'E');
  67.            epson : putchr(CHR(18)+CHR(27)+'P'+CHR(27)+'2')
  68.         END {case}
  69.     ELSE
  70.         CASE prt_type OF
  71.        {dumb : ;  {no action}
  72.          ids : BEGIN
  73.                    putchr(CHR(27)+'R2$'); {Draft quality print}
  74.                    CASE prt_lpi OF
  75.                        six     : putchr(CHR(27)+'B8$');
  76.                        eight   : putchr(CHR(27)+'B6$');
  77.                        ten     : putchr(CHR(27)+'B5$');
  78.                        twelve  : putchr(CHR(27)+'B4$')
  79.                    END; {case}
  80.                    CASE prt_cpi OF
  81.                        pica     : putchr(CHR(29));
  82.                        squeezed : putchr(CHR(31));
  83.                        elite    : putchr(CHR(30));
  84.                        tiny     : putchr(CHR(30))   {20 cpi n/a on Prism, use 16.7}
  85.                    END; {case}
  86.                    CASE prt_color OF
  87.                        black    : putchr(CHR(27)+'Q4$');
  88.                        blue     : putchr(CHR(27)+'Q3$');
  89.                        green    : putchr(CHR(27)+'Q2$');
  90.                        red      : putchr(CHR(27)+'Q1$')
  91.                    END; {case}
  92.                    putchr(CHR(13));       {and a final <cr> to return head}
  93.                    {IF block_type = BIT THEN BEGIN
  94.                       graphics set-up - none required
  95.                    END;}
  96.                END;
  97.           hp : BEGIN
  98.                    CASE prt_lpi OF
  99.                        six     : putchr(CHR(27)+'&l8C');
  100.                        eight   : putchr(CHR(27)+'&l6C');
  101.                        ten     : putchr(CHR(27)+'&l5C');
  102.                        twelve  : putchr(CHR(27)+'&l4C')
  103.                    END; {case}
  104.                    CASE prt_cpi OF
  105.                        pica     : putchr(CHR(27)+'(s10H');
  106.                        elite    : putchr(CHR(27)+'(s12H');
  107.                        squeezed : putchr(CHR(27)+'(s17H');
  108.                        tiny     : putchr(CHR(27)+'(s20H')
  109.                    END; {case}
  110.                    putchr(CHR(13));      {and a final <cr> to return head}
  111.                    IF block_type = BIT THEN {graphics set-up}
  112.                        CASE graphic_dens OF
  113.                            single : putchr(CHR(27)+'*t75R'+CHR(27)+'*r0A');
  114.                            double : putchr(CHR(27)+'*t100R'+CHR(27)+'*r0A');
  115.                            triple : putchr(CHR(27)+'*t150R'+CHR(27)+'*r0A');
  116.                            quad   : putchr(CHR(27)+'*t300R'+CHR(27)+'*r0A');
  117.                        END {case graphic_dens}
  118.                    {END if graphics}
  119.                END;
  120.        epson : BEGIN
  121.                    putchr(CHR(27)+'x0'); {Draft quality print}
  122.                    CASE prt_lpi OF
  123.                        six     : putchr(CHR(27)+'2');
  124.                        eight   : putchr(CHR(27)+'0');
  125.                        ten     : putchr(CHR(27)+'1');
  126.                        twelve  : putchr(CHR(27)+'3'+chr(18))
  127.                    END; {case}
  128.                    CASE prt_cpi OF
  129.                        pica     : putchr(CHR(27)+'P'+chr(18));
  130.                        squeezed : putchr(CHR(27)+'P'+chr(15));
  131.                        elite    : putchr(CHR(27)+'M'+chr(18));
  132.                        tiny     : putchr(CHR(27)+'M'+chr(15))
  133.                    END; {case}
  134.                    putchr(CHR(13));       {and a final <cr> to return head}
  135.                    IF block_type = BIT THEN
  136.                       putchr(CHR(27)+'A'+CHR(8));  {graphics 8/72 <lf>}
  137.                    {END}
  138.                END
  139.         END {case}
  140.     {END if reset_prt}
  141. END; {procedure set_up prt}
  142.  
  143.  
  144. PROCEDURE out_char; {(ochar,ichar,action : CHAR);}
  145. VAR i : INTEGER;
  146. BEGIN
  147.     CASE action OF
  148.         'S' : BEGIN      {Start - initialize graphic lines and clear}
  149.                  FOR i := 1 TO Max_Length DO BEGIN
  150.                      gout_1.chr[i] := CHR(0);
  151.                      gout_2.chr[i] := CHR(0);
  152.                      out_line.chr[i] := CHR(0)
  153.                  END;
  154.                  gout_1.len := 0;
  155.                  gout_2.len := 0;
  156.                  out_line.len := 0
  157.               END;
  158.         'C' : BEGIN
  159.                  FOR i := 1 TO out_line.len DO out_line.chr[i] := CHR(0);
  160.                  out_line.len := 0  {Clear - clear current line}
  161.               END;
  162.         'A' : BEGIN           {Add - add passed char and inverse char to line}
  163.                   out_line.len := out_line.len + 1;
  164.                   IF (out_line.chr[out_line.len] IN [CHR(0),' ']) OR
  165.                     ((out_line.chr[out_line.len] <> ' ') AND (ochar <> ' '))
  166.                     THEN BEGIN
  167.                       out_line.chr[out_line.len] := ochar;
  168.                       out_line.ichr[out_line.len] := ichar
  169.                   END {don't overwrite non spaces}
  170.               END;
  171.     'D','E' : BEGIN         {End - line completed, output}
  172.                   IF avail_width < out_line